package org.lvgo.factory.kit;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Supplier;

/**
 * @author lvgo
 * @version 1.0
 * @Description: 打造武器工厂
 * @date 18-8-23 下午4:45
 */
public interface WeaponFactory {
    /**
     * 获取武器工厂
     *
     * @param consumer 武器工厂构建器
     * @return 武器工厂
     */
    static WeaponFactory getFactory(Consumer<Builder> consumer) {
        Map<WeaponType, Supplier<Weapon>> map = new HashMap<>(5);
        consumer.accept(map::put);
        return weaponType -> map.get(weaponType).get();
    }

    /**
     * 打造武器
     *
     * @param weaponType 武器类型
     * @return 打造好的武器
     */
    Weapon create(WeaponType weaponType);


}
